草庐IT

C++11 auto 和 size_type

全部标签

c++ - 为什么 auto 不允许作为函数参数?

来自thisquestion,显然auto不能用作函数参数。我的问题是为什么允许返回类型为auto但函数参数不是?autofunction(autodata){//DOESsomething}因为,thereauto在c++1z中有很多好处,那为什么不呢? 最佳答案 此语法是在ConceptsTS中提出的,但并未将其纳入C++17forvariousreasons.尽管我在下面概述了一些批评,但它已添加到C++20中。注意:通过将P1141R2合并到标准中,答案的以下部分已过时。我会把它留在这里供引用。然而,即使我们最终在下一次迭代

c++ - std::array::max_size 和 std::array::size 给出不同结果的示例

每当我尝试使用std::array的max_size()和size()函数时,我都会得到相同的结果,我想知道是否会出现其中两个给出不同结果的情况。 最佳答案 该函数的存在是为了与std::vector等其他容器兼容。对于std::array,这两个值将始终相同。 关于c++-std::array::max_size和std::array::size给出不同结果的示例,我们在StackOverflow上找到一个类似的问题: https://stackoverfl

c++ - 将 shared_ptr 转换为 auto_ptr?

我需要在我的代码中从shared_ptr获取auto_ptr。我可以进行反向操作——将auto_ptr转换为shared_ptr,因为shared_ptr具有这样的构造函数:templateexplicitshared_ptr(std::auto_ptr&r);我可以将shared_ptr转换为auto_ptr吗?还是设计上不可能? 最佳答案 这在设计上是不可能的,因为该对象可能与其他共享指针共享,因此将其“提取”到auto_ptr可能会导致删除引用的对象。出于同样的原因,shared_ptr没有像auto_ptr那样的“relea

c++ - c++11在另一个线程中提前生成随机数

对于C++中的一些数值模拟,我需要生成许多具有指数分布的随机数(都具有相同的预定分布)。目前,我的程序运行良好,但超过50%的CPU时间花在了生成这些随机数上。我想做的是以不阻塞模拟主循环的方式生成这些随机数。更准确地说,我想要一个线程,它的工作是始终保持一个随机数“提前准备好”,并在有人读取这个随机数时立即生成一个新的随机数。有人知道这样做的好方法吗?目前,我的顺序代码如下所示:#include#include#includeusingnamespacestd;//exponentialrandomvariablewithparameterlambdaclassEXPGenerato

c++ - 互斥锁映射c++11

我需要制作一个线程安全的映射,我的意思是每个值都必须独立互斥。例如,我需要能够同时从2个不同的线程获取map["abc"]和map["vf"]。我的想法是制作两个映射:一个用于数据,一个用于每个键的互斥锁:classcache{private:....std::mapmainCache;std::map>mutexCache;std::mutexgMutex;.....public:std::stringget(std::stringkey);};std::stringcache::get(std::stringkey){std::mutex*m;gMutex.lock();if(mu

Type-C接口简单介绍-面向单片机应用

Type-C接口简单介绍-面向单片机应用1、绪论用单片机做一些东西时,Type-C接口逐渐替代了MicroUSB接口。但不像MicroUSB那样只有5V、GND、D+、D-、ID五个接口,Type-C接口有24个引脚,比较复杂。大多时候我们用TypeC也用不到USB3.0协议,还仅仅是像MicroUSB那样的功能,因此不需很详细的了解,只需要简单了解TypeC各引脚功能即可。本文尽量简单的介绍TypeC。2、TypeC硬件接口介绍2.1、公母头图片及特点TypeC分为公头和母头。一般TypeC充电线是公头,手机里面的TypeC接口是母头,公头可以插进母头里面。母头中间一排有立着的板子上分布着接

c++ - undefined reference `pthread_create' 使用 ASIO 和 std::thread 制作 C++11 应用程序时出错

我设置了Eclipse(实际上是XilinxSDK,但基于Eclipse)和g++4.9.2来编译一个使用独立ASIO的项目,我在属性->C/C++中使用了-std=c++11Build->Settings->ToolSettings->Otherflags以便它可以使用所有C++11特性进行编译。我还在C/C++GeneralSymbols中设置了ASIO_HAS_STD_THREAD,ASIO_STANDALONE等等,我希望ASIO头文件会使用std::thread而不是线程。但是,我仍然看到来自make的错误:undefinedreferencetopthread_create

【100%通过率】华为OD机试真题 Java 实现【无向图染色】【2022.11 Q4新题】

         所有题目均有五种语言实现。C实现目录、C++实现目录、Python实现目录、Java实现目录、JavaScript实现目录

c++ - "Cannot overload functions distinguished by return type alone"是什么意思?

我有这个代码:在标题中:...int32_tround(floatv);...在源代码中...int32_tround(floatv){int32_tt=(int32_t)std::floor(v);if((v-t)>0.5)returnt+1;returnt;}...我在这个网站上四处看了看,但这些例子对我来说似乎有点太复杂了。我正在学习C++,所以如果有人能向我解释错误的含义以及发生错误的原因,我将不胜感激。 最佳答案 Functionoverloading表示有多个方法同名。现在,为了解析正确的重载方法,编译器会查看方法名称和

C++:是否有任何理由使用 uint64_t 而不是 size_t

我对size_t的理解是它足够大以容纳您可能期望它需要容纳的任何(整数)值。(也许这是一个糟糕的解释?)例如,如果您使用for循环之类的东西来遍历vector中的所有元素,size_t通常为64位长(或至少在我的系统上),以便它可以保存vector.size()的所有可能返回值。或者至少,我认为这是正确的?因此,是否有任何理由使用A而不是B:答:for(uint64_ti=0;i乙:for(size_ti=0;i如果我的解释有误或者您有更好的解释,请随时修改。编辑:我应该补充一点,我的理解是size_t表现得像一个普通的无符号整数-也许这是不正确的? 最佳答